﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Security.Authentication;
using System.Web;
using System.Web.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using SystemFrameworks;
using BusinessRules;
using Common;
using DataAccess;

public partial class RegistroUsuarios : System.Web.UI.Page
{
    BasZonasGeograficas objBR = new BasZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
    BasZonasGeograficasData objData = new BasZonasGeograficasData();
    private string opcId_;

    public string OpcId
    {
        get
        {
            if (!String.IsNullOrEmpty(opcId_))
                return opcId_;
            else
                return "";
        }
        set
        {
            opcId_ = value;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        traerContextItems();
        if (!IsPostBack)
        {
            this.CargarDepartamentos();
            if (cbxDepartamentos.SelectedValue != "")
                this.CargarMunicipios(this.cbxDepartamentos.SelectedValue);
        }

    }



    protected void cbxDepartamentos_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cbxDepartamentos.SelectedValue != "")
            this.CargarMunicipios(this.cbxDepartamentos.SelectedValue);
        else
            cbxMunicipios.Items.Clear();

    }

    protected void btnGuardarCambios_Click(object sender, EventArgs e)
    {
        //this.recaptcha.Validate();
        //if (!this.recaptcha.IsValid)
        //{
        //    this.litMensajeCaptcha.Text = string.Format(@"<span style=""color:red;"">{0}</span>", this.GetGlobalResourceObject("Resource", "MensajeCaptcha"));
        //    return;
        //}
        //else
        //{
            this.RegistrarUsuario();
        //}
    }


    private void RegistrarUsuario()
    {
        //try
        //{

            string tipo = ConfigurationManager.AppSettings["TipoDeUsuarioPorDefecto"].ToString();
            string cargo = ConfigurationManager.AppSettings["CargoDelUsuarioPorDefecto"].ToString();
            int diasExpiracion = Convert.ToInt32(ConfigurationManager.AppSettings["DiasExpiracionContrasenaPorDefecto"].ToString());
            string cambioClave = ConfigurationManager.AppSettings["CambioDeClavePorDefecto"].ToString();
            string estado = ConfigurationManager.AppSettings["EstadoDelUsuarioPorDefecto"].ToString();
                int perfilId = Convert.ToInt32(ConfigurationManager.AppSettings["IdPerfilDeUsuarioPorDefecto"].ToString());
                BusinessRules.Usuarios objUsuarios = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["conn"].ToString());
                decimal decUsuario = 0;
                int inRetorno = 0;
                inRetorno = objUsuarios.AdicionarUsuarioTeatro(perfilId,tipo, txtCorreoElectronico.Text, txtNombre.Text, cargo, txtDireccion.Text,
                                             txtTelefono.Text, txtCorreoElectronico.Text, diasExpiracion,
                                             txtContrasena.Text, cambioClave, estado, 0, "", ref decUsuario);
                if (inRetorno == 1)
                {
                    crearContextItems();
                    txtNombre.Text = "";
                    txtCorreoElectronico.Text = "";
                    txtContrasena.Text = "";
                    txtConfirmarContrasena.Text = "";
                    msgBox1.alert("El usuario se registro exitosamente");
                    Server.Transfer("login.aspx",true);
                }
                else if (inRetorno == 0)
                    msgBox1.alert("El correo electronico ya se encuentra registrado");
                else if (inRetorno == -1)
                    msgBox1.alert("El usuario ya se encuentra registrado");
                litMensajeCaptcha.Text = "";
            

        //}
        //catch (Exception ex)
        //{
        //    throw new ApplicationExceptionManager(ex.Message, ex);
        //}

    }

    private void crearContextItems()
    {
        Context.Items["txtCorreoElectronico"] = txtCorreoElectronico.Text;
        Context.Items["txtClave"] = txtContrasena.Text;
        Context.Items["OPC_ID"] = OpcId;
    }

    private void traerContextItems()
    {
        if (Context.Items["OPC_ID"] != null)
            OpcId = Convert.ToString(Context.Items["OPC_ID"]);
       
    }

    private void CargarDepartamentos()
    {
        try
        {
            DataTable departamentos = this.objBR.ConsultarZonasGeograficasDepartamento();
            this.cbxDepartamentos.Items.Clear();
            if (departamentos != null && departamentos.Rows.Count > 0)
            {
                for (int i = 0; i < departamentos.Rows.Count; i++)
                {
                    if (departamentos.Rows[i]["ZON_NOMBRE"].ToString().Contains("<") || departamentos.Rows[i]["ZON_NOMBRE"].ToString().Contains(">"))
                        continue;
                    this.cbxDepartamentos.Items.Add(new ListItem(departamentos.Rows[i]["ZON_NOMBRE"].ToString(), departamentos.Rows[i]["ZON_ID"].ToString()));
                }
                this.cbxDepartamentos.Items.Insert(0, new ListItem("Seleccione", string.Empty));
            }
        }
        catch (Exception ex)
        {
            throw new ApplicationExceptionManager(ex.Message, ex);
        }
    }






    private void CargarMunicipios(string departamentoId)
    {
        try
        {
            DataTable municipios = this.objBR.ConsultarZonasGeograficasPadre(departamentoId);
            this.cbxMunicipios.Items.Clear();
            if (municipios != null && municipios.Rows.Count > 0)
            {
                for (int i = 0; i < municipios.Rows.Count; i++)
                {
                    if (municipios.Rows[i]["ZON_NOMBRE"].ToString().Contains("<") || municipios.Rows[i]["ZON_NOMBRE"].ToString().Contains(">"))
                        continue;

                    this.cbxMunicipios.Items.Add(new ListItem(municipios.Rows[i]["ZON_NOMBRE"].ToString(), municipios.Rows[i]["ZON_ID"].ToString()));
                }
            }
        }
        catch (Exception ex)
        {
            throw new ApplicationExceptionManager(ex.Message, ex);
        }
    }
}